package com.xianyun.rpc.registry;

import com.xianyun.rpc.utils.SpiLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class RegistryFactory {

    private static final Logger log = LoggerFactory.getLogger(RegistryFactory.class);

    /**
     * 使用静态代码块的好处，确保了 Registry 接口实现类的加载只进行一次，适用于单例模式和工厂类的初始化。
     * 统一管理了 Registry 类的实现类的加载，避免了重复的加载。
     */
    static {
        SpiLoader.load(Registry.class);
    }

    /**
     * 默认注册中心
     */
    private static final Registry DEFAULT_REGISTRY = new EtcdRegistry();

    /**
     * 获取实例
     * @param key 配置文件中的键值。(etcd = ......)
     * @return
     */
    public static Registry getInstance(String key) {
        return SpiLoader.getInstance(Registry.class, key);
    }

}